// 表单字段校验规则类型
export interface ValidationRule {
  required?: boolean;
  message: string;
  minLength?: number;
  maxLength?: number;
  pattern?: string;
  min?: number;
  max?: number;
}

// 选项类型（用于 Select、Radio 等组件）
export interface Option {
  label: string;
  value: string | number;
}

// 字段可见性规则
export interface VisibilityRule {
  key: string;  // 依赖的字段名
  value: string | number | boolean;   // 当依赖字段为此值时显示
  operator?: 'eq' | 'ne' | 'gt' | 'lt' | 'in'; // 比较操作符，默认为 eq
}

// UI配置类型
export interface UIConfig {
  label: string;
  placeholder?: string;
  component: 'Input' | 'Select' | 'TextArea' | 'InputNumber' | 'Switch' | 'DatePicker' | 'Radio' | 'Checkbox' | 'Slot';
  options?: Option[];
  rows?: number; // TextArea 行数
  disabled?: boolean;
  size?: 'small' | 'middle' | 'large';
  slotName?: string; // 新增：插槽名称
}

// 表单字段类型
export interface FormField {
  key: string;
  type: 'string' | 'number' | 'boolean' | 'date' | 'select' | 'array' | 'slot';
  ui: UIConfig;
  rules?: ValidationRule[];
  visibility?: VisibilityRule;
  defaultValue?: string | number | boolean | Date;
}

// 表单 Schema 类型
export interface FormSchema {
  formName: string;
  description?: string;
  fields: FormField[];
  layout?: 'horizontal' | 'vertical' | 'inline';
  submitText?: string;
}

// 表单数据类型
export type FormData = Record<string, string | number | boolean | Date>; 